<?php
namespace app\api\controller;
use think\facade\Db;
class Config extends Base{
    //获取配置列表 键值对
    public function get_config_key_value(){
        $param = input("param.");

        $id = isset($param['id']) ? ['id' => $param['id']]:[];//判断是否需要 根据id获取数据
        $key = isset($param['key']) ? [['key', 'like', $param['key'].'%']]:[];//判断是否需要 根据key 获取数据
        $type = isset($param['type']) ? [['tabs_type', 'like', $param['type'].'%']]:[];//判断是否需要 根据type 获取数据

        //按照sort字段排序 越大越靠前  0 为最小 排最后面
        $arr = Db::table('an_config')
        ->where($id)
        ->where($key)
        ->where($type)
        ->order('sort', 'desc')
        ->column('*','key');

        foreach($arr as $k => $v){
            // 处理配置数据 如果是json 需要转换数据
            if($v['arr'] == 'y' || $v['data_type'] == 'img'){
                $arr[$k]['value'] = json_decode($v['value']);
            }
        }

        $this->info['data'] = $arr;
        return json($this->info);
    }

    //修改 配置表数据
    public function saveConfig(){
        $param = input("");
        $this->info['data'] = Db::table('an_config')->where('id', $param['id'])->update([
            'up_time'=>time(),
            'value'=>$param['value'],
            'sort'=>$param['sort'],
            'title'=>$param['title'],
        ]);
        $this->logData('修改系统设置');
        return json($this->info);
    }

    //添加 系统配置
    public function add_config_list(){
        $param = input('');
        Db::table('an_config')
        ->json(['value'])
        ->insert([
            'create_time'=>time(),
            'up_time'=>time(),
            'tabs_type'=>$param['tabs_type'],
            'key'=>$param['key'],
            'data_type'=>$param['data_type'],
            'value'=>$param['value'],
            'title'=>$param['title'],
            'notes'=>$param['notes'],
            'sort'=>$param['sort'],
            'arr'=>$param['arr'],
        ]);
        $this->logData('新增系统设置');
        return json($this->info);
    }

    //获取配置列表
    public function get_config_list(){
        $param = input("param.");

        $id = isset($param['id']) ? ['id' => $param['id']]:[];//判断是否需要 根据id获取数据
        $key = isset($param['key']) ? [['key', 'like', $param['key'].'%']]:[];//判断是否需要 根据key 获取数据
        $type = isset($param['type']) ? [['tabs_type', 'like', $param['type'].'%']]:[];//判断是否需要 根据type 获取数据

        //按照sort字段排序 越大越靠前  0 为最小 排最后面
        $arr = Db::table('an_config')
        ->where($id)
        ->where($key)
        ->where($type)
        ->order('sort', 'desc')
        ->select()
        ->toArray();

        foreach($arr as $k => $v){
            // 处理配置数据 如果是json 需要转换数据
            if($v['arr'] == 'y' || $v['data_type'] == 'img'){
                $arr[$k]['value'] = json_decode($v['value']);
            }
        }

        $this->info['data'] = $arr;
        return json($this->info);
    }

    //删除配置项
    public function del_config(){
        $param = input("");
        Db::table('an_config')->where('id',$param['id'])->delete();
        return json($this->info);
    }
    
    //根据 name前缀 获取配置列表
    public function get_config_like(){
        $is_wxapp = Db::table('an_config')->where('id',29)->find();
        if($is_wxapp['value'] == '1'){
            $list = [
                'index_notice_id'=>'0',
                'index_notice_title'=>'梦想还是要有的，万一实现了呢！',
                'index_title'=>'首页',
                'index_bg_img'=>'other/2022328164845233219337.jpeg',  
            ];
        }else{
            $param = input("");
            $arr = Db::table('an_config')->where([
                [
                    'key', 'like', $param['name'].'%'
                ]
            ])->select()->toArray();

            foreach($arr as $k => $v){
                // 处理配置数据 如果是json 需要转换数据
                if($v['arr'] == 'y' || $v['data_type'] == 'img'){
                    $arr[$k]['value'] = json_decode($v['value']);
                }
            } 

            foreach($arr as $k=>$v){
                $list[$v['key']] = $v['value']; 
            }
        }

        $this->info['data'] = $list;
        return json($this->info);
    }
}